//声明变量方式 var let const
/**
 *变量或者标识符命名规则 
 *1.不能由数字开头
 *2.标识符由字母，数字，下划线以及$组成 
 *3.建议使用驼峰式命名 firstName lastName
 *4.不能使用关键字和保留字 var class
 *以下哪些变量是合法的?
 * 3a a3 _$mes 
 */
/**
 * var声明变量特点：
 * 1.声明变量会进行变量提升
 * console.log(a);
 * var a = 10;
 * 解析顺序 var a；
 * console.log(a);
 * a = 10;
 * 2.变量可以重复声明
var a = 10;
var a = 'hello';
var a = {};
console.log(a)
3.不存在块级作用域
if(true){
    var a = 10;
}
console.log(a); 拿if代码块或者for循环代码包裹的变量全局可见
4.可以声明变量的同时不进行初始化
var a;
*/
//var a;
// console.log(a);
// 声明变量 var a；
// 声明变量并初始化 var a = 10;
// 声明多个变量并初始化 var a=10,b=20,c=30;
var a = 10,b=20,c=30;
console.log(a,b,c);

/**
 * let 声明变量特点：
 * 1.不可重复声明变量
 * let a =10;
 * let a = 'hello';
 * 2.不会变量提升
 * let a = 10;
 * console.log(a);
 * 3.存在块级作用域
   if(true){
    let a=10;
   }
   console.log(a);//访问不到
 * 4.声明变量同时可以不进行初始化
   let a;
   console.log(a);
 * const 声明变量特点：
   1.变量不会提升
console.log(a);
const a = 10;//报错 a应该先出初始化再访问
2.不可重复声明变量
const a = 10;
const a "hello";
3.存在块级作用域
 if(true){
    const a = 10;
}
console.log(a);//报错 访问不到
4.const 声明变量必须进行初始化 const a =10;
const a;//错误 必须进行初始化
5.const一般用于声明常量
const a = 10;
a = 'hello'

*/
 